const redis = require('redis')
const config = require('../conf/db.js').redis

// 创建客户端
const redisClient = redis.createClient(config.port, config.host)

// 处理错误
redisClient.on('error', err => {
  console.error(err)
})

function set(key, val) {
  // 处理 val 为 object 的情况
  if (typeof val === 'object') {
    val = JSON.stringify(val)
  }
  redisClient.set(key, val, redis.print)
}

function get(key) {
  return new Promise((resolve, reject) => {
    redisClient.get(key, (err, val) => {
      // 处理错误 reject(err)
      if (err) {
        reject(err)
        return
      }
      // key 值不存在时，resolve(null)
      if (val == null) {
        resolve(null)
        return
      }
      // 尝试使用 JSON.parse 处理 val，否则直接 resolve(val)
      try {
        resolve(JSON.parse(val))
      } catch (err) {
        resolve(val)
      }
    })
  })
}

module.exports = {
  set,
  get
}
